﻿#ifndef MAINWINDOWS_H
#define MAINWINDOWS_H

#include <derforpasswdprodpanel.h>
#include <formabout.h>
#include <classforipmaskcalculate.h>
#include <appbase.h>
#include <classforhostdiscover.h>

#include <QWidget>
#include <QPointer>
#include <QTextCodec>
#include <QListWidget>
#include <QScrollArea>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QStringList>
#include <QPushButton>


class MainWindows : public QWidget
{
    Q_OBJECT
public:
    explicit MainWindows(QWidget *parent = nullptr);
    ~MainWindows();

signals:

private slots:
    void on_pObjQPusButAbout_clicked();

    void on_pObjQListWidget_itemClicked();
private:

    int varIntLeftList = 0;

    AppBase* pAppBase = nullptr; // 加载基础设置

    /*
     * 主界面两个重要基础框架元素。
     * */
    QPointer<QHBoxLayout> pObjQHBoxLayout = nullptr;  // 主界面布局: pObjQHBoxLayout
    QPointer<QVBoxLayout> pObjQVBoxLayoutLeft = nullptr;  // 左侧承载 QListWidget 的布局

    QPointer<QListWidget> pObjQListWidget = nullptr;  // 左侧列表: pObjQListWidget
    QPointer<QScrollArea> pObjQScrollArea = nullptr;  // 右侧界面: pObjQScrollArea

    QPointer<QPushButton> pObjQPusButAbout = nullptr;  // 左侧列表下方的 关于 按钮，在 pObjQVBoxLayoutLeft 布局上
    QPointer<DerForPasswdProdPanel> pObjDFPPP = nullptr;  // 右侧 密码模块 呈现在 QScrollArea 布局上

    ClassForIPMaskCalculate* pObjIPMaskCal = nullptr;  // 右侧呈现 掩码模块。

    ClassForHostDiscover* pObjHostDiscover = nullptr;  // 网络主机发现模块

    // 关于窗口
    QPointer<FormAbout> pFormAbout = nullptr;

    /*
     * 左侧列表对象，显示列表用。
     * */
    QStringList varObjQStrLisLefList = {};

    /*
     * 主界面初始化
     * */
    void funVoidWindowsIniti(MainWindows* p=nullptr, const int &itemSelect = 0) const;
};

#endif // MAINWINDOWS_H
